<!-- 维修详情 》 基本信息 -->

<template>
  <div class="DetailRepair-RepairBase">
    <MajorTitle title="基本信息">
      <ShowStatus v-if="one.hastenStatus > 1" v-bind="hastenProps" />
      <ShowStatus v-if="one.checkTimeoutFlag === 1" v-bind="superviseProps" />
      <ShowStatus v-bind="statusProps" />
    </MajorTitle>

    <EasyRow col3>
      <ShowText label="工单编号" bind="orderCode" />
      <ShowDict label="工单类型" bind="orderTypeId" :dict="CORE.DICT.task_type" />
      <ShowDict label="子类" bind="orderSubTypeId" :dict="CORE.DICT.task_sub_type" />
    </EasyRow>

    <EasyRow col3>
      <ShowText label="录单人">{{ createUser }}</ShowText>
      <ShowText label="所在位置" bind="areaName" />
      <ShowText v-if="one.assetName" label="关联设备" bind="assetName" />
      <ShowText v-else label="关联设备" bind="deviceName" />
    </EasyRow>

    <EasyRow col3>
      <ShowText label="提单人">{{ releaseUser }}</ShowText>
      <ShowTree :label="`所属${CORE.MAP.ORGAN}`" bind="organizationId" :dict="CORE.ORGAN.DICT" />
      <ShowDict label="工单来源" bind="orderSourceId" :dict="CORE.DICT.task_source" />
    </EasyRow>
  </div>
</template>

<script>
// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'
import props from './props'

// ============================== 导出组件 ============================== //

export default {
  /**
   * 名称定义 (实际使用名称)
   */
  name: 'RepairBase',

  /**
   * 混入列表 (配置选项合并)
   */
  mixins: [CORE.mixWeb()],

  /**
   * 属性注册 (抽取以便查阅)
   */
  props,

  /**
   * 计算属性 (慎用箭头函数)
   */
  computed: {
    /**
     * 加急属性
     */
    hastenProps() {
      return {
        bind: 'hastenStatus',
        dict: [[2, '加急', '', '红']],
        noLabel: true,
        auto: true,
      }
    },

    /**
     * 督察属性
     */
    superviseProps() {
      return {
        bind: 'checkTimeoutFlag',
        dict: [[1, '督察', '', '金']],
        noLabel: true,
        auto: true,
      }
    },

    /**
     * 状态字典
     */
    STATUS() {
      if (this.statusDict) return this.statusDict
      return (CORE.DICT.task_status || []).map(([, name, code, color]) => [code, name, '', color])
    },

    /**
     * 状态属性
     */
    statusProps() {
      const { one: { checkTimeoutLevel: level }, STATUS } = this
      const timeoutClass = level ? `DetailRepair-RepairBase-timeout-${level}` : null

      return {
        dict: STATUS,
        class: timeoutClass,
        noLabel: true,
        auto: true,
      }
    },

    /**
     * 提单人
     */
    releaseUser() {
      const { releaseUserName = '', releaseUserPhone = '' } = this.one
      return `${releaseUserName}${releaseUserPhone ? ` (${releaseUserPhone})` : ''}`
    },

    /**
     * 录单人
     */
    createUser() {
      const { createUserName = '', createUserPhone = '' } = this.one
      return `${createUserName}${createUserPhone ? ` (${createUserPhone})` : ''}`
    },
  },
}
</script>

<style lang="scss">
@import './index.scss';
</style>
